/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.ArrayList;
import java.util.List;
import model.Usuario;
import org.hibernate.Query;
import org.hibernate.Transaction;
import util.HibernateUtil;

/**
 *
 * @author Loan
 */
public class UsuarioDAO {
    
    private org.hibernate.Session session;
    // método construtor - igual ao nome da Familia precedido por public

    public UsuarioDAO() {
        session = HibernateUtil.getSessionFactory().openSession();
    }

    public void insert(Usuario m) {
        Transaction t = session.beginTransaction();
        session.save(m);
        t.commit();
    }

    public void update(Usuario m) {
        Transaction t = session.beginTransaction();
        session.merge(m);
        t.commit();
    }

    public void delete(Usuario m) {
        Transaction t = session.beginTransaction();
        session.delete(m);
        t.commit();
    }

    public Usuario findById(String id) {
        return (Usuario) session.load(Usuario.class, id);
    }

    public List<Usuario> findAll() {        
        List<Usuario> list = new ArrayList<Usuario>();        
        try{
        return session.createCriteria(Usuario.class).list(); // faz um select * from marca
        }catch(org.hibernate.ObjectNotFoundException ex){  
            System.out.println("CATCH!");
            return list;
        }        
    }
    
    public List<Usuario> BuscaSenhaELogin(String usuario, String senha){
        String verificacaoLogin = "FROM Usuario where usu_name like '" + usuario + "' and usu_pwd = '" + senha + "'";
        System.out.println(" sql "+verificacaoLogin);
        return session.createQuery(verificacaoLogin).list();   
    }
    
    
    public List<Usuario> findByDescricao(String descricao) {                
        Query q = session.createQuery( "From Usuario where upper(usu_name) like upper(:X)" );
        q.setParameter("X", "%"+descricao+"%");  
        return q.list();                
    }
 
}
